#PRUEBAS CLASE CARTA
#coding: utf8

from Carta import Carta

# Definición de pruebas

def prueba_constructor():
	carta1 = Carta(1,0)
	carta2 = Carta(2,1)
	carta3 = Carta(5,2)
	carta4 = Carta(12,3)
	for carta in (carta1,carta2,carta3,carta4):
		assert isinstance(carta,Carta)
	assert (carta1.palo==0 and carta1.numero==1)
	assert (carta2.palo==1 and carta2.numero==2)
	assert (carta3.palo==2 and carta3.numero==5)
	assert (carta4.palo==3 and carta4.numero==12)
	
def constructor_invalido():
	excepcion_numero_alto_capturada = False
	excepcion_numero_bajo_capturada = False
	excepcion_palo_alto_capturada = False
	excepcion_palo_bajo_capturada = False
	
	try:
		carta1 = Carta(0,0)	
	except ValueError:
		excepcion_numero_bajo_capturada = True
	
	try:
		carta2 = Carta(14,2)
	except ValueError:
		excepcion_numero_alto_capturada = True
		
	try:
		carta3 = Carta(1,-1)
	except ValueError:
		excepcion_palo_bajo_capturada = True
		
	try:
		carta4 = Carta(1,4)
	except ValueError:
		excepcion_palo_alto_capturada = True
		
	assert excepcion_numero_alto_capturada == True
	assert excepcion_numero_bajo_capturada == True
	assert excepcion_palo_alto_capturada == True
	assert excepcion_palo_bajo_capturada == True
	
def prueba_obtener_palo_y_numero():
	carta1 = Carta(1,0)
	carta2 = Carta(2,1)
	carta3 = Carta(5,2)
	carta4 = Carta(12,3)
	
	assert (carta1.obtener_palo() == 0 and carta1.obtener_numero() == 1)
	assert (carta2.obtener_palo() == 1 and carta2.obtener_numero() == 2)
	assert (carta3.obtener_palo() == 2 and carta3.obtener_numero() == 5)
	assert (carta4.obtener_palo() == 3 and carta4.obtener_numero() == 12)
	
def prueba_str():
	carta1 = Carta(1,0)
	carta2 = Carta(2,1)
	carta3 = Carta(5,2)
	carta4 = Carta(12,3)
	
	assert str(carta1) == "A de corazones"
	assert str(carta2) == "2 de diamantes"
	assert str(carta3) == "5 de picas"
	assert str(carta4) == "Q de treboles"
	
#Ejecución de pruebas
def pruebas_cartas():
	print "Pruebas Cartas\n\r"
	for prueba in (prueba_constructor,constructor_invalido,prueba_str,prueba_obtener_palo_y_numero):
		print (prueba.__name__ + ":"),
		prueba()
		print "OK"

pruebas_cartas()
